import axios from "axios"
import axiosAdapterUniapp from 'axios-adapter-uniapp'
import baseUrl from '@/common/config.js'
import store from '@/store'

const service = axios.create({
	baseURL: baseUrl.ApiRootUrl,// 配置基础url，一般指向后端服务的地址
	timeout: 500000,// 过期时间
	adapter: axiosAdapterUniapp,
});


service.interceptors.request.use(
	config => {
		var token = store.state.token;
		// console.log("token", token)
		if (!token) {
			// console.log("没有token进入")
			token = uni.getStorageSync('token');
			store.token = token
			if (!token) {
				// console.log("缓存中也没有token");
			}
		}
		config.headers['authorization'] = token;

		if (config.url.indexOf("http") !== -1) {
			return config;
		}
		// console.log('aip接口地址',config.url)
		return config;
	},
	error => {
		return Promise.reject(error.response);
	}
);

service.interceptors.response.use(
	response => {
		// console.log("response", response)
		if (response.status == 200) {
			return response.data;
		} else {
			uni.showToast({
				title: "无法连接到服务",
				icon: 'none'
			});
			return Promise.reject(response);
		}
	},
	error => {
		// console.log(error)
		if (error.response.status == 403) {
			uni.showToast({
				title: error.response.data.message,
				icon: 'none'
			});
			store.commit('DEL_USER');
		} else {
			uni.showToast({
				title: error.message,
				icon: 'none'
			});
		}
		return Promise.reject(error.response);
	}
);

const req = {
	baseUrl: baseUrl,
	post: function(url, data) {
		return service({
			url: url,
			method: 'post',
			data: data
		});
	},
	get: function(url, data) {
		return service({
			url: url,
			method: 'get',
			params: data
		});
	},
	//上传
	upload: function(url, data) {
		return new Promise((req, rej) => {
			// url = store.state.server + url; //路径
			url = baseUrl.ApiRootUrl + url; //路径
			let filePath = data.filePath //文件这是（单个文件） 
			let files = data.files //需要上传的文件列表。使用 files 时，filePath 和 name 不生效。
			let name = data.name // 文件对应的 key , 开发者在服务器端通过这个 key 可以获取到文件二进制内容 填 flise
			let fileType = data.fileType //文件类型，image/video/audio
			let formData = data.formData //附带参数

			uni.uploadFile({
				url: url, //仅为示例，非真实的接口地址
				filePath: filePath,
				name: name,
				fileType: fileType,
				formData: formData,
				success: function(res) {
					req(res)
				},
				fail: function(res) {
					rej(res)
				}
			});
		})
	}
};

export default req